In [1]:
%%html
<style>
.jp-Notebook-cell {padding-bottom: 400px;}
</style>

Current developments in the Jupyter ecosystem¶

Jupyter Open Studio Day - NYC¶

📅 2024-04-29¶

Jeremy Tuloup¶

Navigating the Jupyter landscape¶

  • Navigating the Jupyter Landscape
    • JupyterCon 2023 (Paris)
    • Jeremy Tuloup, Johan Mabille
    • https://www.youtube.com/watch?v=uWJ0-OPKTxI

center

JupyterLab 4.1¶

Diagrams in Markdown¶

Matching GitHub-Flavoured Markdown, JupyterLab 4.1 now supports Mermaid 2 diagrams. To create a mermaid diagram use the mermaid language specifier for a code block in a markdown cell or document, for example:

flowchart LR

A[Hard] -->|Text| B(Round)
B --> C{Decision}
C -->|One| D[Result 1]
C -->|Two| E[Result 2]

Inline completer¶

In [2]:
def factorial(n):
    result = 1
    for num in range(2, n + 1):
        result *= num
    return result
In [ ]:
def factorial(n):
    result = 1
    for num in range(2, n + 1):
        result *= num
    return result

Opening files from tracebacks¶

In [3]:
import custom; custom.div(1, 0)
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
Cell In[3], line 1
----> 1 import custom; custom.div(1, 0)

File ~/git/jtpio/2024-04-29-jupyter-open-studio-day/notebooks/custom.py:2, in div(a, b)
      1 def div(a, b):
----> 2     return a / b

ZeroDivisionError: division by zero

Error indicator in the table of contents¶

Plugin Manager¶

Virtual scrollbar for notebook in windowed mode¶

JupyterLab 4.2¶

Workspace UI¶

Recently opened/closed files¶

Full notebook windowing mode by default¶

Improved Shortcuts Editor¶

Among the numerous improvements and bug fixes for the keyboard shortcuts editor:

  • it is now possible to remove the default shortcuts,
  • shortcuts are correctly sorted when using a language pack,
  • shortcuts with different arguments are now correctly displayed as individual entries.

Dark high contrast theme¶

Notebook 7¶

image.png

Follows JupyterLab 4 release cycle and features. For example Mermaid diagrams also work here:

flowchart LR

A[Hard] -->|Text| B(Round)
B --> C{Decision}
C -->|One| D[Result 1]
C -->|Two| E[Result 2]
  • 7.1 released in February 2024
  • 7.2 to be released in May 2024

JupyterLab Desktop¶

  • Initially released in September 2021
  • UI modes
  • Python environment management

image.png

image.png

image.png

Voila 0.5¶

  • Released in August 2023
  • Built as a JupyterLab application
  • Compatible with JupyterLab extensions (instead of the legacy classic notebook extensions)

Themes¶

image.png

Mimetypes¶

image.png

Tree page using the JupyterLab File browser¶

image.png

Jupyter Widgets¶

In [4]:
from ipywidgets import IntSlider

slider = IntSlider()
display(slider)
slider
IntSlider(value=0)
Out[4]:
IntSlider(value=0)

ipywidgets 8¶

  • Released in August 2022
  • Internal rework to facilitate reuse in other scenarios (JupyterLite, no ipykernel dependency)
  • Thriving ecosystem of custom Jupyter widgets

ipyleaflet¶

In [5]:
from ipyleaflet import Map, GeomanDrawControl

m = Map(center=(50, 354), zoom=5)

draw_control = GeomanDrawControl()
draw_control.polyline =  {
    "pathOptions": {
        "color": "#6bc2e5",
        "weight": 8,
        "opacity": 1.0
    }
}
draw_control.polygon = {
    "pathOptions": {
        "fillColor": "#6be5c3",
        "color": "#6be5c3",
        "fillOpacity": 1.0
    }
}
draw_control.circlemarker = {
    "pathOptions": {
        "fillColor": "#efed69",
        "color": "#efed69",
        "fillOpacity": 0.62
    }
}
draw_control.rectangle = {
    "pathOptions": {
        "fillColor": "#fca45d",
        "color": "#fca45d",
        "fillOpacity": 1.0
    }
}

m.add(draw_control)

m
Out[5]:
Map(center=[50, 354], controls=(ZoomControl(options=['position', 'zoom_in_text', 'zoom_in_title', 'zoom_out_te…

anywidget¶

Simplify authoring and distributing custom Jupyter Widgets.

image.png

ipylgbst¶

A widget library for controlling LEGO® BOOST via web-bluetooth.

Jupyter Server 2¶

  • Released December 2022
  • New features and APIs:
    • Identity API
    • Authorization API
    • Even system API
  • Server extensions:
    • Jupyter scheduler
    • Resource usage
    • RTC stack

Jupyverse¶

  • Initial release in 2021
  • Alternative to Jupyter Server
  • Redefines what a Jupyter server is and what it should do
  • Plugin based (like lab)

Servers and kernels¶

  • Concurrent kernel execution
  • Async kernel execution
  • New kernels:
    • xeus-ruby
    • xeus-cpp

JupyterHub 4¶

No description has been provided for this image
  • Released in April 2023

  • JupyterHub 5 soon to be released (beta available)

  • Recent developments:

    • RBAC
    • roles and permissions
    • RTC
    • https://jupyterhub.readthedocs.io/en/latest/reference/changelog.html

Real Time Collaboration¶

image.png

  • jupyter-collaboration package released in 2023 (to be installed with JupyterLab 4)

Recent developments:¶

  • Server Side Execution (experimental, requires JupyterLab 4.2+)
  • Challenges the current Jupyter architecture, protocol, and execution paradigm
  • Bug fixes
  • Suggestions and commenting UI

JupyterCAD¶

  • 3D geometry modeling with collaborative editing support
  • JupyterLab remix
  • Uses the RTC stack

image.png

JupyterLab extensions¶

Updated for JupyterLab and Notebook 7¶

  • RISE
  • nbgrader

JupyterLab LSP¶

In [ ]:
import math
math.

Jupyter AI¶

  • Generative AI in Jupyter
  • Supports many provider (no lock-in)
  • Future integration with RTC (chat is shared) where the RTC bot would be a "collaborator"

image.png

Accessibility¶

  • CodeMirror 6 in JupyterLab
  • Continuous improvements in JupyterLab and Notebook 7
  • Provide an accessible Notebook offering via Notebook 7

https://blog.jupyter.org/recent-keyboard-navigation-improvements-in-jupyter-4df32f97628d

image.png

https://blog.jupyter.org/improving-the-accessibility-of-jupyter-6c695db518d3

image.png

JupyterLite¶

image.png

  • Remixes the Jupyter stack
    • lab and notebook
    • Pyodide
    • Emscripten forge
    • remote contents (S3, drives)

https://jupyter.org/try¶

JupyterLite¶

  • 0.3.0 (based on JupyterLab 4.1 and Notebook 7.1) released in March 2024
  • 0.4.0 to be released after JupyterLab 4.2 and Notebook 7.2 (May / June 2024)

image.png

Voici¶

  • Static web applications from notebooks
  • "Voila for JupyterLite"
  • Voici Gallery: https://voila-dashboards.github.io/voici-gallery/

Publishing and interactive documents¶

  • Executable books
  • Thebe
  • MystMarkdown
  • Myst-lite: https://rowanc1.github.io/myst-lite/

Governance¶

  • Activity in other subprojects, such as Jupyter Security Group, Social Media Strategy
  • Docs working group
  • JupyterLab and Notebook merged into a Jupyter Frontends subproject
  • Proposal to move to the Linux foundation

Community¶

  • Jupyter Community Calendar

    • Jupyter Frontends (videos on YouTube)
    • ipywidgets & Voila
    • JupyterHub collaboration cafe
    • Accessibility
    • Jupyter Server
    • Jupyter Server Collaboration hour
    • SSC and EC open hours meetings
  • Subproject team compass repos

image.png

image.png